CASE WHEN <判斷式1> THEN <回應結果1>
WHEN <判斷式2> THEN <回應結果2>
WHEN <判斷式3> THEN <回應結果3>
……
ELSE <回應結果>
END
說明 :
從判斷WHERE子句中的<判斷式>開始,即判斷真偽值,
→若結果為真值(TRUE),則回傳至THEN子句的<回應結果>,
→若結果為非真值(FALSE),則移至下一個WHERE子句再來判斷,
→若全部WHEN子句皆不為真,則回傳ELSE回應結果,
→END結束全部過程 (最後的END不能省略)
<< 接下來使用這個資料表 >>
Ex1 : 使用CASE運算式將早餐分類分別加上A、B、C字串
SELECT food_name,
CASE WHEN food_catalg = '熱食'
THEN 'A:'+ food_catalg
WHEN food_catalg = '炸物'
THEN 'B:'+food_catalg
WHEN food_catalg = '飲料'
THEN 'C:'+ food_catalg
ELSE NULL
END AS ABC
FROM food
執行結果
Ex2 : 使用CASE運算式將SELECT敘述的結果由縱向轉橫向
SELECT SUM(CASE WHEN food_catalg = '熱食'
THEN buy_price ELSE 0 END) AS sum_熱食,
SUM(CASE WHEN food_catalg = '炸物'
THEN buy_price ELSE 0 END) AS sum_炸物,
SUM(CASE WHEN food_catalg = '飲料'
THEN buy_price ELSE 0 END) AS sum_飲料
FROM food;
執行結果
Ex3 : GROUP BY子句無法做到縱向轉橫向
SELECT food_catalg,
SUM(buy_price) AS sum_price
FROM food
GROUP BY food_catalg;
執行結果